#ifndef SIMULATED_CASTLING_ACTION_HPP_
#	define SIMULATED_CASTLING_ACTION_HPP_

#	include "SimulatedAction.hpp"
#	include "CastlingAction.hpp"

class SimulatedCastlingAction : public CastlingAction, public SimulatedAction
{
	public:
		SimulatedCastlingAction(Chess::Color color, CastlingAction::Type type);
		~SimulatedCastlingAction();
		
		void reset(CastlingAction::Type type);
		void undo();
		
	protected:
		static CastlingAction::CastlingFunction* undo_cast_funcs[KING_SIDE + 1];
	
		static void undo_castling_king_side(Chess::Color);
		static void undo_castling_queen_side(Chess::Color);
};


#endif
